use base_data::channel::Channel;
use tools::ResultEx;


///实现此特性的对象,将接收呼叫命令.用于实现电话呼叫过程.
pub trait SwitchCommand {
	///发起一个呼叫,返回呼叫成功后对应的信息
	fn originate() -> ResultEx<Channel>;
	///接受一个呼叫
	fn answer_call();
	///桥接两个通道, 即通道之间直接对话
	fn bridge_channel();
	///挂断一个通道
	fn hangup_channel();
	///给一个呼入发送准备铃音信号,对应sip180
	fn ringing();
	///给一个呼入发送预接通信号,对应sip183
	fn pre_answer();
	///给一个指定通道播放铃音
	fn play_bell();
	///停止给一个指定通道播放铃音
	fn stop_play_bell();
	///挂断一个通道
	fn kill_channel();
	///设置一个通道的变量
	fn set_var();
	///开始针对通道录音
	/// 
	/// 可能在通道接通或未接通的情况下执行.
	/// 当已经桥接,实际就是录两个通道的声音
	fn start_record_sound();
}